package folder.networks;

import java.util.List;

import folder.model.virtual.VirtualLink;
import folder.model.virtual.VirtualNetwork;
import folder.model.virtual.VirtualNode;

public class TestVNetwork
{
	public final VirtualNetwork virtualNetwork;
	
	public TestVNetwork()
	{
		virtualNetwork = VirtualNetwork.virtualNetwork( 0 );
		
		generateVirtualNodes();
		generateVirtualLinks();
		connect();
	}
	
	private void generateVirtualNodes()
	{
		for( int i = 0; i < 5; i++ )
			virtualNetwork.addVirtualNode( VirtualNode.virtualNode( i, virtualNetwork ) );
	}
	
	private void generateVirtualLinks()
	{				
		List< VirtualNode > virtualNodes = virtualNetwork.getVirtualNodes();
		List< VirtualLink > virtualLinks = virtualNetwork.getVirtualLinks();
		
		virtualLinks.add( VirtualLink.virtualLink( 0, 1, virtualNodes.get( 0 ), virtualNodes.get( 1 ), virtualNetwork ) );
		virtualLinks.add( VirtualLink.virtualLink( 1, 5, virtualNodes.get( 0 ), virtualNodes.get( 2 ), virtualNetwork ) );
		//virtualLinks.add( VirtualLink.virtualLink( 2, 1, virtualNodes.get( 0 ), virtualNodes.get( 3 ), virtualNetwork ) );
		virtualLinks.add( VirtualLink.virtualLink( 3, 1, virtualNodes.get( 1 ), virtualNodes.get( 2 ), virtualNetwork ) );
		//virtualLinks.add( VirtualLink.virtualLink( 4, 1, virtualNodes.get( 1 ), virtualNodes.get( 4 ), virtualNetwork ) );
		//virtualLinks.add( VirtualLink.virtualLink( 5, 1, virtualNodes.get( 3 ), virtualNodes.get( 4 ), virtualNetwork ) );
	}
	
	private void connect()
	{
		for( VirtualLink virtualLink: virtualNetwork.getVirtualLinks() )
		{
			virtualLink.getVirtualNodeA().addVirtualLink(virtualLink);
			virtualLink.getVirtualNodeB().addVirtualLink( virtualLink );
		}
	}

}
